home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / CIncludes / Memory.h < prev    next >
C/C++ Source or Header  |  1996-05-01  |  20KB  |  790 lines

  1. /*
  2.      File:        Memory.h
  3.  
  4.      Contains:    Memory Manager Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. */
  18. /*
  19.  NOTE
  20.  
  21.  Don't change GetHandleSize and GetPtrSize into inlines.  They are documented as returning
  22.  0 in case of an error in Inside Mac, but the traps actually return an error code in D0.
  23.  The glue sets D0 to 0 if an error occured.
  24. */
  25. #ifndef __MEMORY__
  26. #define __MEMORY__
  27.  
  28. #ifndef __TYPES__
  29. #include <Types.h>
  30. #endif
  31. #ifndef __MIXEDMODE__
  32. #include <MixedMode.h>
  33. #endif
  34.  
  35. #ifdef __cplusplus
  36. extern "C" {
  37. #endif
  38.  
  39. #if PRAGMA_IMPORT_SUPPORTED
  40. #pragma import on
  41. #endif
  42.  
  43. #if PRAGMA_ALIGN_SUPPORTED
  44. #pragma options align=mac68k
  45. #endif
  46.  
  47.  
  48. enum {
  49.     maxSize                        = 0x00800000,                    /*Max data block size is 8 megabytes*/
  50.     defaultPhysicalEntryCount    = 8,                            /* values returned from the GetPageState function */
  51.     kPageInMemory                = 0,
  52.     kPageOnDisk                    = 1,
  53.     kNotPaged                    = 2
  54. };
  55.  
  56.  
  57. enum {
  58.                                                                 /* masks for Zone->heapType field */
  59.     k32BitHeap                    = 1,                            /* valid in all Memory Managers */
  60.     kNewStyleHeap                = 2,                            /* true if new Heap Manager is present */
  61.     kNewDebugHeap                = 4                                /* true if new Heap Manager is running in debug mode on this heap */
  62. };
  63.  
  64. /* size of a block in bytes */
  65. typedef long Size;
  66. #if FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE
  67. typedef pascal long (*GrowZoneProcPtr)(Size cbNeeded);
  68. typedef pascal void (*PurgeProcPtr)(Handle blockToPurge);
  69. /*
  70.         This ProcPtr uses register based parameters on the 68k and cannot
  71.         be written in or called from a high-level language without the help of
  72.         mixed mode or assembly glue.
  73.  
  74.             typedef pascal void (*UserFnProcPtr)(void *parameter);
  75.  
  76. */
  77.  
  78. #if GENERATINGCFM
  79. typedef UniversalProcPtr GrowZoneUPP;
  80. typedef UniversalProcPtr PurgeUPP;
  81. typedef UniversalProcPtr UserFnUPP;
  82. #else
  83. typedef GrowZoneProcPtr GrowZoneUPP;
  84. typedef PurgeProcPtr PurgeUPP;
  85. typedef Register68kProcPtr UserFnUPP;
  86. #endif
  87. struct Zone {
  88.     Ptr                             bkLim;
  89.     Ptr                             purgePtr;
  90.     Ptr                             hFstFree;
  91.     long                             zcbFree;
  92.     GrowZoneUPP                     gzProc;
  93.     short                             moreMast;
  94.     short                             flags;
  95.     short                             cntRel;
  96.     short                             maxRel;
  97.     short                             cntNRel;
  98.     SInt8                             heapType;                    /* previously "maxNRel", now holds flags (e.g. k32BitHeap)*/
  99.     SInt8                             unused;
  100.     short                             cntEmpty;
  101.     short                             cntHandles;
  102.     long                             minCBFree;
  103.     PurgeUPP                         purgeProc;
  104.     Ptr                             sparePtr;
  105.     Ptr                             allocPtr;
  106.     short                             heapData;
  107. };
  108. typedef struct Zone Zone;
  109.  
  110. typedef Zone *THz;
  111. struct MemoryBlock {
  112.     void *                            address;
  113.     unsigned long                     count;
  114. };
  115. typedef struct MemoryBlock MemoryBlock;
  116.  
  117. struct LogicalToPhysicalTable {
  118.     MemoryBlock                     logical;
  119.     MemoryBlock                     physical[8];
  120. };
  121. typedef struct LogicalToPhysicalTable LogicalToPhysicalTable;
  122.  
  123. typedef short PageState;
  124. typedef short StatusRegisterContents;
  125.  
  126. enum {
  127.     uppGrowZoneProcInfo = kPascalStackBased
  128.          | RESULT_SIZE(SIZE_CODE(sizeof(long)))
  129.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Size))),
  130.     uppPurgeProcInfo = kPascalStackBased
  131.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Handle))),
  132.     uppUserFnProcInfo = kRegisterBased
  133.          | REGISTER_ROUTINE_PARAMETER(1, kRegisterA0, SIZE_CODE(sizeof(void *)))
  134. };
  135.  
  136. #if GENERATINGCFM
  137. #define NewGrowZoneProc(userRoutine)        \
  138.         (GrowZoneUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppGrowZoneProcInfo, GetCurrentArchitecture())
  139. #define NewPurgeProc(userRoutine)        \
  140.         (PurgeUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppPurgeProcInfo, GetCurrentArchitecture())
  141. #define NewUserFnProc(userRoutine)        \
  142.         (UserFnUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppUserFnProcInfo, GetCurrentArchitecture())
  143. #else
  144. #define NewGrowZoneProc(userRoutine)        \
  145.         ((GrowZoneUPP) (userRoutine))
  146. #define NewPurgeProc(userRoutine)        \
  147.         ((PurgeUPP) (userRoutine))
  148. #define NewUserFnProc(userRoutine)        \
  149.         ((UserFnUPP) (userRoutine))
  150. #endif
  151.  
  152. #if GENERATINGCFM
  153. #define CallGrowZoneProc(userRoutine, cbNeeded)        \
  154.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppGrowZoneProcInfo, (cbNeeded))
  155. #define CallPurgeProc(userRoutine, blockToPurge)        \
  156.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppPurgeProcInfo, (blockToPurge))
  157. #define CallUserFnProc(userRoutine, parameter)        \
  158.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppUserFnProcInfo, (parameter))
  159. #else
  160. #define CallGrowZoneProc(userRoutine, cbNeeded)        \
  161.         (*(userRoutine))((cbNeeded))
  162. #define CallPurgeProc(userRoutine, blockToPurge)        \
  163.         (*(userRoutine))((blockToPurge))
  164. /* (*UserFnUPP) cannot be called from a high-level language without the Mixed Mode Manager */
  165. #endif
  166. extern pascal Ptr GetApplLimit(void)
  167.  TWOWORDINLINE(0x2EB8, 0x0130);
  168.  
  169. extern pascal THz SystemZone(void)
  170.  TWOWORDINLINE(0x2EB8, 0x02A6);
  171.  
  172. extern pascal THz ApplicationZone(void)
  173.  TWOWORDINLINE(0x2EB8, 0x02AA);
  174.  
  175. extern pascal Handle GZSaveHnd(void)
  176.  TWOWORDINLINE(0x2EB8, 0x0328);
  177.  
  178. extern pascal Ptr TopMem(void)
  179.  TWOWORDINLINE(0x2EB8, 0x0108);
  180.  
  181. extern pascal OSErr MemError(void)
  182.  TWOWORDINLINE(0x3EB8, 0x0220);
  183.  
  184. #endif
  185. #if FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE
  186.  
  187. #if GENERATING68K && !GENERATINGCFM
  188. #pragma parameter __A0 GetZone
  189. #endif
  190. extern pascal THz GetZone(void )
  191.  ONEWORDINLINE(0xA11A);
  192.  
  193.  
  194. #if GENERATING68K && !GENERATINGCFM
  195. #pragma parameter __A0 NewHandle(__D0)
  196. #endif
  197. extern pascal Handle NewHandle(Size byteCount)
  198.  ONEWORDINLINE(0xA122);
  199.  
  200.  
  201. #if GENERATING68K && !GENERATINGCFM
  202. #pragma parameter __A0 NewHandleSys(__D0)
  203. #endif
  204. extern pascal Handle NewHandleSys(Size byteCount)
  205.  ONEWORDINLINE(0xA522);
  206.  
  207.  
  208. #if GENERATING68K && !GENERATINGCFM
  209. #pragma parameter __A0 NewHandleClear(__D0)
  210. #endif
  211. extern pascal Handle NewHandleClear(Size byteCount)
  212.  ONEWORDINLINE(0xA322);
  213.  
  214.  
  215. #if GENERATING68K && !GENERATINGCFM
  216. #pragma parameter __A0 NewHandleSysClear(__D0)
  217. #endif
  218. extern pascal Handle NewHandleSysClear(Size byteCount)
  219.  ONEWORDINLINE(0xA722);
  220.  
  221.  
  222. #if GENERATING68K && !GENERATINGCFM
  223. #pragma parameter __A0 HandleZone(__A0)
  224. #endif
  225. extern pascal THz HandleZone(Handle h)
  226.  ONEWORDINLINE(0xA126);
  227.  
  228.  
  229. #if GENERATING68K && !GENERATINGCFM
  230. #pragma parameter __A0 RecoverHandle(__A0)
  231. #endif
  232. extern pascal Handle RecoverHandle(Ptr p)
  233.  ONEWORDINLINE(0xA128);
  234.  
  235.  
  236. #if GENERATING68K && !GENERATINGCFM
  237. #pragma parameter __A0 RecoverHandleSys(__A0)
  238. #endif
  239. extern pascal Handle RecoverHandleSys(Ptr p)
  240.  ONEWORDINLINE(0xA528);
  241.  
  242.  
  243. #if GENERATING68K && !GENERATINGCFM
  244. #pragma parameter __A0 NewPtr(__D0)
  245. #endif
  246. extern pascal Ptr NewPtr(Size byteCount)
  247.  ONEWORDINLINE(0xA11E);
  248.  
  249.  
  250. #if GENERATING68K && !GENERATINGCFM
  251. #pragma parameter __A0 NewPtrSys(__D0)
  252. #endif
  253. extern pascal Ptr NewPtrSys(Size byteCount)
  254.  ONEWORDINLINE(0xA51E);
  255.  
  256.  
  257. #if GENERATING68K && !GENERATINGCFM
  258. #pragma parameter __A0 NewPtrClear(__D0)
  259. #endif
  260. extern pascal Ptr NewPtrClear(Size byteCount)
  261.  ONEWORDINLINE(0xA31E);
  262.  
  263.  
  264. #if GENERATING68K && !GENERATINGCFM
  265. #pragma parameter __A0 NewPtrSysClear(__D0)
  266. #endif
  267. extern pascal Ptr NewPtrSysClear(Size byteCount)
  268.  ONEWORDINLINE(0xA71E);
  269.  
  270.  
  271. #if GENERATING68K && !GENERATINGCFM
  272. #pragma parameter __A0 PtrZone(__A0)
  273. #endif
  274. extern pascal THz PtrZone(Ptr p)
  275.  ONEWORDINLINE(0xA148);
  276.  
  277.  
  278. #if GENERATING68K && !GENERATINGCFM
  279. #pragma parameter __D0 MaxBlock
  280. #endif
  281. extern pascal long MaxBlock(void )
  282.  ONEWORDINLINE(0xA061);
  283.  
  284.  
  285. #if GENERATING68K && !GENERATINGCFM
  286. #pragma parameter __D0 MaxBlockSys
  287. #endif
  288. extern pascal long MaxBlockSys(void )
  289.  ONEWORDINLINE(0xA461);
  290.  
  291.  
  292. #if GENERATING68K && !GENERATINGCFM
  293. #pragma parameter __D0 StackSpace
  294. #endif
  295. extern pascal long StackSpace(void )
  296.  ONEWORDINLINE(0xA065);
  297.  
  298.  
  299. #if GENERATING68K && !GENERATINGCFM
  300. #pragma parameter __A0 NewEmptyHandle
  301. #endif
  302. extern pascal Handle NewEmptyHandle(void )
  303.  ONEWORDINLINE(0xA166);
  304.  
  305.  
  306. #if GENERATING68K && !GENERATINGCFM
  307. #pragma parameter __A0 NewEmptyHandleSys
  308. #endif
  309. extern pascal Handle NewEmptyHandleSys(void )
  310.  ONEWORDINLINE(0xA566);
  311.  
  312.  
  313. #if GENERATING68K && !GENERATINGCFM
  314. #pragma parameter HLock(__A0)
  315. #endif
  316. extern pascal void HLock(Handle h)
  317.  ONEWORDINLINE(0xA029);
  318.  
  319.  
  320. #if GENERATING68K && !GENERATINGCFM
  321. #pragma parameter HUnlock(__A0)
  322. #endif
  323. extern pascal void HUnlock(Handle h)
  324.  ONEWORDINLINE(0xA02A);
  325.  
  326.  
  327. #if GENERATING68K && !GENERATINGCFM
  328. #pragma parameter HPurge(__A0)
  329. #endif
  330. extern pascal void HPurge(Handle h)
  331.  ONEWORDINLINE(0xA049);
  332.  
  333.  
  334. #if GENERATING68K && !GENERATINGCFM
  335. #pragma parameter HNoPurge(__A0)
  336. #endif
  337. extern pascal void HNoPurge(Handle h)
  338.  ONEWORDINLINE(0xA04A);
  339.  
  340.  
  341. #if GENERATING68K && !GENERATINGCFM
  342. #pragma parameter HLockHi(__A0)
  343. #endif
  344. extern pascal void HLockHi(Handle h)
  345.  TWOWORDINLINE(0xA064, 0xA029);
  346.  
  347. extern pascal Handle TempNewHandle(Size logicalSize, OSErr *resultCode)
  348.  THREEWORDINLINE(0x3F3C, 0x001D, 0xA88F);
  349.  
  350. extern pascal Size TempMaxMem(Size *grow)
  351.  THREEWORDINLINE(0x3F3C, 0x0015, 0xA88F);
  352.  
  353. extern pascal long TempFreeMem(void )
  354.  THREEWORDINLINE(0x3F3C, 0x0018, 0xA88F);
  355.  
  356. extern pascal void InitZone(GrowZoneUPP pgrowZone, short cmoreMasters, void *limitPtr, void *startPtr);
  357.  
  358.  
  359. #if GENERATING68K && !GENERATINGCFM
  360. #pragma parameter SetZone(__A0)
  361. #endif
  362. extern pascal void SetZone(THz hz)
  363.  ONEWORDINLINE(0xA01B);
  364.  
  365.  
  366. #if GENERATING68K && !GENERATINGCFM
  367. #pragma parameter __D0 CompactMem(__D0)
  368. #endif
  369. extern pascal Size CompactMem(Size cbNeeded)
  370.  ONEWORDINLINE(0xA04C);
  371.  
  372.  
  373. #if GENERATING68K && !GENERATINGCFM
  374. #pragma parameter __D0 CompactMemSys(__D0)
  375. #endif
  376. extern pascal Size CompactMemSys(Size cbNeeded)
  377.  ONEWORDINLINE(0xA44C);
  378.  
  379.  
  380. #if GENERATING68K && !GENERATINGCFM
  381. #pragma parameter PurgeMem(__D0)
  382. #endif
  383. extern pascal void PurgeMem(Size cbNeeded)
  384.  ONEWORDINLINE(0xA04D);
  385.  
  386.  
  387. #if GENERATING68K && !GENERATINGCFM
  388. #pragma parameter PurgeMemSys(__D0)
  389. #endif
  390. extern pascal void PurgeMemSys(Size cbNeeded)
  391.  ONEWORDINLINE(0xA44D);
  392.  
  393.  
  394. #if GENERATING68K && !GENERATINGCFM
  395. #pragma parameter __D0 FreeMem
  396. #endif
  397. extern pascal long FreeMem(void )
  398.  ONEWORDINLINE(0xA01C);
  399.  
  400.  
  401. #if GENERATING68K && !GENERATINGCFM
  402. #pragma parameter __D0 FreeMemSys
  403. #endif
  404. extern pascal long FreeMemSys(void )
  405.  ONEWORDINLINE(0xA41C);
  406.  
  407.  
  408. #if GENERATING68K && !GENERATINGCFM
  409. #pragma parameter ReserveMem(__D0)
  410. #endif
  411. extern pascal void ReserveMem(Size cbNeeded)
  412.  ONEWORDINLINE(0xA040);
  413.  
  414.  
  415. #if GENERATING68K && !GENERATINGCFM
  416. #pragma parameter ReserveMemSys(__D0)
  417. #endif
  418. extern pascal void ReserveMemSys(Size cbNeeded)
  419.  ONEWORDINLINE(0xA440);
  420.  
  421.  
  422. #if GENERATING68K && !GENERATINGCFM
  423. #pragma parameter __D0 MaxMem(__A1)
  424. #endif
  425. extern pascal Size MaxMem(Size *grow)
  426.  TWOWORDINLINE(0xA11D, 0x2288);
  427.  
  428.  
  429. #if GENERATING68K && !GENERATINGCFM
  430. #pragma parameter __D0 MaxMemSys(__A1)
  431. #endif
  432. extern pascal Size MaxMemSys(Size *grow)
  433.  TWOWORDINLINE(0xA51D, 0x2288);
  434.  
  435.  
  436. #if GENERATING68K && !GENERATINGCFM
  437. #pragma parameter SetGrowZone(__A0)
  438. #endif
  439. extern pascal void SetGrowZone(GrowZoneUPP growZone)
  440.  ONEWORDINLINE(0xA04B);
  441.  
  442.  
  443. #if GENERATING68K && !GENERATINGCFM
  444. #pragma parameter MoveHHi(__A0)
  445. #endif
  446. extern pascal void MoveHHi(Handle h)
  447.  ONEWORDINLINE(0xA064);
  448.  
  449.  
  450. #if GENERATING68K && !GENERATINGCFM
  451. #pragma parameter DisposePtr(__A0)
  452. #endif
  453. extern pascal void DisposePtr(Ptr p)
  454.  ONEWORDINLINE(0xA01F);
  455.  
  456. extern pascal Size GetPtrSize(Ptr p);
  457.  
  458.  
  459. #if GENERATING68K && !GENERATINGCFM
  460. #pragma parameter SetPtrSize(__A0, __D0)
  461. #endif
  462. extern pascal void SetPtrSize(Ptr p, Size newSize)
  463.  ONEWORDINLINE(0xA020);
  464.  
  465.  
  466. #if GENERATING68K && !GENERATINGCFM
  467. #pragma parameter DisposeHandle(__A0)
  468. #endif
  469. extern pascal void DisposeHandle(Handle h)
  470.  ONEWORDINLINE(0xA023);
  471.  
  472.  
  473. #if GENERATING68K && !GENERATINGCFM
  474. #pragma parameter SetHandleSize(__A0, __D0)
  475. #endif
  476. extern pascal void SetHandleSize(Handle h, Size newSize)
  477.  ONEWORDINLINE(0xA024);
  478.  
  479. extern pascal Size GetHandleSize(Handle h);
  480.  
  481.  
  482. #if GENERATING68K && !GENERATINGCFM
  483. #pragma parameter __D0 InlineGetHandleSize(__A0)
  484. #endif
  485. extern pascal Size InlineGetHandleSize(Handle h)
  486.  ONEWORDINLINE(0xA025);
  487.  
  488.  
  489. #if GENERATING68K && !GENERATINGCFM
  490. #pragma parameter ReallocateHandle(__A0, __D0)
  491. #endif
  492. extern pascal void ReallocateHandle(Handle h, Size byteCount)
  493.  ONEWORDINLINE(0xA027);
  494.  
  495.  
  496. #if GENERATING68K && !GENERATINGCFM
  497. #pragma parameter ReallocateHandleSys(__A0, __D0)
  498. #endif
  499. extern pascal void ReallocateHandleSys(Handle h, Size byteCount)
  500.  ONEWORDINLINE(0xA427);
  501.  
  502.  
  503. #if GENERATING68K && !GENERATINGCFM
  504. #pragma parameter EmptyHandle(__A0)
  505. #endif
  506. extern pascal void EmptyHandle(Handle h)
  507.  ONEWORDINLINE(0xA02B);
  508.  
  509.  
  510. #if GENERATING68K && !GENERATINGCFM
  511. #pragma parameter HSetRBit(__A0)
  512. #endif
  513. extern pascal void HSetRBit(Handle h)
  514.  ONEWORDINLINE(0xA067);
  515.  
  516.  
  517. #if GENERATING68K && !GENERATINGCFM
  518. #pragma parameter HClrRBit(__A0)
  519. #endif
  520. extern pascal void HClrRBit(Handle h)
  521.  ONEWORDINLINE(0xA068);
  522.  
  523.  
  524. #if GENERATING68K && !GENERATINGCFM
  525. #pragma parameter __D0 HGetState(__A0)
  526. #endif
  527. extern pascal SInt8 HGetState(Handle h)
  528.  ONEWORDINLINE(0xA069);
  529.  
  530.  
  531. #if GENERATING68K && !GENERATINGCFM
  532. #pragma parameter HSetState(__A0, __D0)
  533. #endif
  534. extern pascal void HSetState(Handle h, SInt8 flags)
  535.  ONEWORDINLINE(0xA06A);
  536.  
  537. extern pascal void PurgeSpace(long *total, long *contig);
  538.  
  539. #endif
  540. #if FOR_SYSTEM7_ONLY
  541. /* These are defined in Kernel for System 8 */
  542.  
  543. #if GENERATING68K && !GENERATINGCFM
  544. #pragma parameter BlockMove(__A0, __A1, __D0)
  545. #endif
  546. extern pascal void BlockMove(const void *srcPtr, void *destPtr, Size byteCount)
  547.  ONEWORDINLINE(0xA02E);
  548.  
  549.  
  550. #if GENERATING68K && !GENERATINGCFM
  551. #pragma parameter BlockMoveData(__A0, __A1, __D0)
  552. #endif
  553. extern pascal void BlockMoveData(const void *srcPtr, void *destPtr, Size byteCount)
  554.  ONEWORDINLINE(0xA22E);
  555.  
  556. extern void BlockMoveUncached(const void *srcPtr, void *destPtr, Size byteCount);
  557.  
  558. extern void BlockMoveDataUncached(const void *srcPtr, void *destPtr, Size byteCount);
  559.  
  560. extern void BlockZero(void *destPtr, Size byteCount);
  561.  
  562. extern void BlockZeroUncached(void *destPtr, Size byteCount);
  563.  
  564. #endif
  565. #if FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED
  566. extern pascal void MaxApplZone(void )
  567.  ONEWORDINLINE(0xA063);
  568.  
  569.  
  570. #if GENERATING68K && !GENERATINGCFM
  571. #pragma parameter SetApplBase(__A0)
  572. #endif
  573. extern pascal void SetApplBase(void *startPtr)
  574.  ONEWORDINLINE(0xA057);
  575.  
  576. extern pascal void MoreMasters(void )
  577.  ONEWORDINLINE(0xA036);
  578.  
  579.  
  580. #if GENERATING68K && !GENERATINGCFM
  581. #pragma parameter SetApplLimit(__A0)
  582. #endif
  583. extern pascal void SetApplLimit(void *zoneLimit)
  584.  ONEWORDINLINE(0xA02D);
  585.  
  586. #endif
  587. #if FOR_SYSTEM7_ONLY
  588. extern pascal void InitApplZone(void )
  589.  ONEWORDINLINE(0xA02C);
  590.  
  591. #endif
  592. #if FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED
  593. /*  Temporary Memory routines renamed, but obsolete, in System 7.0 and later.  */
  594. extern pascal void TempHLock(Handle h, OSErr *resultCode)
  595.  THREEWORDINLINE(0x3F3C, 0x001E, 0xA88F);
  596.  
  597. extern pascal void TempHUnlock(Handle h, OSErr *resultCode)
  598.  THREEWORDINLINE(0x3F3C, 0x001F, 0xA88F);
  599.  
  600. extern pascal void TempDisposeHandle(Handle h, OSErr *resultCode)
  601.  THREEWORDINLINE(0x3F3C, 0x0020, 0xA88F);
  602.  
  603. extern pascal Ptr TempTopMem(void )
  604.  THREEWORDINLINE(0x3F3C, 0x0016, 0xA88F);
  605.  
  606. #endif
  607. #if FOR_SYSTEM7_ONLY
  608.  
  609. #if GENERATING68K && !GENERATINGCFM
  610. #pragma parameter __D0 HoldMemory(__A0, __A1)
  611. #endif
  612. extern pascal OSErr HoldMemory(void *address, unsigned long count)
  613.  TWOWORDINLINE(0x7000, 0xA05C);
  614.  
  615.  
  616. #if GENERATING68K && !GENERATINGCFM
  617. #pragma parameter __D0 UnholdMemory(__A0, __A1)
  618. #endif
  619. extern pascal OSErr UnholdMemory(void *address, unsigned long count)
  620.  TWOWORDINLINE(0x7001, 0xA05C);
  621.  
  622.  
  623. #if GENERATING68K && !GENERATINGCFM
  624. #pragma parameter __D0 LockMemory(__A0, __A1)
  625. #endif
  626. extern pascal OSErr LockMemory(void *address, unsigned long count)
  627.  TWOWORDINLINE(0x7002, 0xA05C);
  628.  
  629.  
  630. #if GENERATING68K && !GENERATINGCFM
  631. #pragma parameter __D0 LockMemoryContiguous(__A0, __A1)
  632. #endif
  633. extern pascal OSErr LockMemoryContiguous(void *address, unsigned long count)
  634.  TWOWORDINLINE(0x7004, 0xA05C);
  635.  
  636.  
  637. #if GENERATING68K && !GENERATINGCFM
  638. #pragma parameter __D0 UnlockMemory(__A0, __A1)
  639. #endif
  640. extern pascal OSErr UnlockMemory(void *address, unsigned long count)
  641.  TWOWORDINLINE(0x7003, 0xA05C);
  642.  
  643. extern pascal OSErr GetPhysical(LogicalToPhysicalTable *addresses, unsigned long *physicalEntryCount);
  644.  
  645.  
  646. #if GENERATING68K && !GENERATINGCFM
  647. #pragma parameter __D0 DeferUserFn(__A0, __D0)
  648. #endif
  649. extern pascal OSErr DeferUserFn(UserFnUPP userFunction, void *argument)
  650.  ONEWORDINLINE(0xA08F);
  651.  
  652.  
  653. #if GENERATING68K && !GENERATINGCFM
  654. #pragma parameter __D0 DebuggerGetMax
  655. #endif
  656. extern pascal long DebuggerGetMax(void )
  657.  TWOWORDINLINE(0x7000, 0xA08D);
  658.  
  659. extern pascal void DebuggerEnter(void )
  660.  TWOWORDINLINE(0x7001, 0xA08D);
  661.  
  662. extern pascal void DebuggerExit(void )
  663.  TWOWORDINLINE(0x7002, 0xA08D);
  664.  
  665. extern pascal void DebuggerPoll(void )
  666.  TWOWORDINLINE(0x7003, 0xA08D);
  667.  
  668.  
  669. #if GENERATING68K && !GENERATINGCFM
  670. #pragma parameter __D0 GetPageState(__A0)
  671. #endif
  672. extern pascal PageState GetPageState(const void *address)
  673.  TWOWORDINLINE(0x7004, 0xA08D);
  674.  
  675.  
  676. #if GENERATING68K && !GENERATINGCFM
  677. #pragma parameter __D0 PageFaultFatal
  678. #endif
  679. extern pascal Boolean PageFaultFatal(void )
  680.  TWOWORDINLINE(0x7005, 0xA08D);
  681.  
  682.  
  683. #if GENERATING68K && !GENERATINGCFM
  684. #pragma parameter __D0 DebuggerLockMemory(__A0, __A1)
  685. #endif
  686. extern pascal OSErr DebuggerLockMemory(void *address, unsigned long count)
  687.  TWOWORDINLINE(0x7006, 0xA08D);
  688.  
  689.  
  690. #if GENERATING68K && !GENERATINGCFM
  691. #pragma parameter __D0 DebuggerUnlockMemory(__A0, __A1)
  692. #endif
  693. extern pascal OSErr DebuggerUnlockMemory(void *address, unsigned long count)
  694.  TWOWORDINLINE(0x7007, 0xA08D);
  695.  
  696.  
  697. #if GENERATING68K && !GENERATINGCFM
  698. #pragma parameter __D0 EnterSupervisorMode
  699. #endif
  700. extern pascal StatusRegisterContents EnterSupervisorMode(void )
  701.  TWOWORDINLINE(0x7008, 0xA08D);
  702.  
  703. #endif
  704. /*
  705.  StripAddress and Translate24To32 macro to nothing on PowerPC
  706.    StripAddress is implemented as a trap in System 6 or later 
  707. */
  708. #if !GENERATINGPOWERPC
  709.  
  710. #if GENERATING68K && !GENERATINGCFM
  711. #pragma parameter __D0 StripAddress(__D0)
  712. #endif
  713. extern pascal Ptr StripAddress(void *theAddress)
  714.  ONEWORDINLINE(0xA055);
  715.  
  716. #else
  717. #define StripAddress(x)       ((Ptr)(x))
  718. #endif
  719. #if !GENERATINGPOWERPC
  720.  
  721. #if GENERATING68K && !GENERATINGCFM
  722. #pragma parameter __D0 Translate24To32(__D0)
  723. #endif
  724. extern pascal Ptr Translate24To32(void *addr24)
  725.  ONEWORDINLINE(0xA091);
  726.  
  727. #else
  728. #define Translate24To32(x)  ((Ptr)(x))
  729. #endif
  730. #if FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE
  731. extern pascal OSErr HandToHand(Handle *theHndl);
  732.  
  733.  
  734. #if GENERATING68K && !GENERATINGCFM
  735. #pragma parameter __D0 PtrToXHand(__A0, __A1, __D0)
  736. #endif
  737. extern pascal OSErr PtrToXHand(const void *srcPtr, Handle dstHndl, long size)
  738.  ONEWORDINLINE(0xA9E2);
  739.  
  740. extern pascal OSErr PtrToHand(const void *srcPtr, Handle *dstHndl, long size);
  741.  
  742.  
  743. #if GENERATING68K && !GENERATINGCFM
  744. #pragma parameter __D0 HandAndHand(__A0, __A1)
  745. #endif
  746. extern pascal OSErr HandAndHand(Handle hand1, Handle hand2)
  747.  ONEWORDINLINE(0xA9E4);
  748.  
  749.  
  750. #if GENERATING68K && !GENERATINGCFM
  751. #pragma parameter __D0 PtrAndHand(__A0, __A1, __D0)
  752. #endif
  753. extern pascal OSErr PtrAndHand(const void *ptr1, Handle hand2, long size)
  754.  ONEWORDINLINE(0xA9EF);
  755.  
  756. #endif
  757. #if OLDROUTINENAMES
  758. #if FOR_SYSTEM7_ONLY
  759. #endif
  760. #if FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE
  761. #define ApplicZone() ApplicationZone()
  762. #define MFTempNewHandle(logicalSize, resultCode) TempNewHandle(logicalSize, resultCode)
  763. #define MFMaxMem(grow) TempMaxMem(grow)
  764. #define MFFreeMem() TempFreeMem()
  765. #define MFTempHLock(h, resultCode) TempHLock(h, resultCode)
  766. #define MFTempHUnlock(h, resultCode) TempHUnlock(h, resultCode)
  767. #define MFTempDisposHandle(h, resultCode) TempDisposeHandle(h, resultCode)
  768. #define MFTopMem() TempTopMem()
  769. #define ResrvMem(cbNeeded) ReserveMem(cbNeeded)
  770. #define DisposPtr(p) DisposePtr(p)
  771. #define DisposHandle(h) DisposeHandle(h)
  772. #define ReallocHandle(h, byteCount) ReallocateHandle(h, byteCount)
  773. #endif
  774. #endif
  775.  
  776. #if PRAGMA_ALIGN_SUPPORTED
  777. #pragma options align=reset
  778. #endif
  779.  
  780. #if PRAGMA_IMPORT_SUPPORTED
  781. #pragma import off
  782. #endif
  783.  
  784. #ifdef __cplusplus
  785. }
  786. #endif
  787.  
  788. #endif /* __MEMORY__ */
  789.  
  790.